Repository navigation
Prod: polish release UI and rating persistence - #344
Merged
TThanos3000 merged 1 commit intoSep 10, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
База и границы
prod/program-analytics-ui-portfe416aa9be9f112c9f2c6bbe539ff946c15f8f3ce50666d8c1e2f990fba3dbea3b851443b8630573907ced23273e298314e9d8604dbaabb25ded6869.Что исправлено
Rating persistence
Backend возвращает
scored: booleanиrated_experts: number[], но Angular ожидалscoredExpertIdиUser[].ProjectRateприведён к фактическому контракту:project.scoredтеперь authoritative для текущего эксперта,ratedExpertsхранит только numeric user IDs, runtime-зависимость отscoredExpertIdудалена.Причина
Criteria not foundпосле reload: внутреннийProjectRatingComponentсоздавалFormGroupиз backend criteria, но CVA отправлял parent control только послеvalueChanges. При edit/confirm без касания parent оставался{}/null, а DTO становился пустым.CVA теперь синхронизирует полный snapshot после безопасной готовности
criteria,registerOnChange()иwriteValue(), без таймеров и fake events. Repository строит DTO по полному backend-набору criteria и сохраняет bool/int/str conversions. Покрыты fresh rating, reload/edit без касания, изменение одного criterion с сохранением остальных, непустой полный payload и successful edit без повторного ростаratedCount.Deadline 409
HttpErrorResponseс409 + evaluation_deadline_passedпереводит карточку в controlled closed state: modal закрывается, form readonly, edit/повторный submit блокируются, CTA и tooltip показывают завершение срока. Raw backend body не выводится. Существующий 400 max-rates остаётся отдельным сценарием.UI polish
[text][error icon][counter]; main grid выровнен по верхнему краю, asset grid не менялся.name,autocomplete="new-password", dynamicaria-label/aria-pressed.Назначений всегозаменён наНазначенийбез изменения count, endpoint, scope, drilldown и DOM behavior.Проверки
Node
20.20.2, npm10.8.2:npm ci: exit 0, 1659 packages; SHA256package.jsonиpackage-lock.jsonдо/после совпадают.npm run format:check: exit 0 на LF checkout exact final head. Windows checkout с CRLF ожидаемо считает все базовые файлы изменёнными; scoped check текущих 23 TS/HTML/MD файлов: exit 0.npm run lint:ts: exit 0, 0 errors, 6 существующих warnings.git diff --check: exit 0.ngx-autosize: window is not defined; на untouched base Prod: port program analytics and participation UI #343 проблема воспроизводится изолированно после 4/4 passed tests.npm run test:ciна Windows блокируется до тестов параллельной инициализацией Angular TestBed (NG0401); untouched base воспроизводит то же поведение (361 suites). Linux CI обязателен как final exact test gate.npm run build:prod: exit 0, production bundle собран. Native Windowssvg-spriteне раскрывает quoted glob и временно создаёт пустой sprite; untouched base даёт тот же результат. Tracked sprite восстановлен. Linux CI обязателен для финальной проверки sprite-generation.Browser smoke
/auth/reset_password?token=smoke-token: проверен на 390 / 768 / 1280, без horizontal overflow; оба eye-control независимы, keyboard activation работает,nameи autocomplete корректны.Перед merge
Нужен чистый Linux Node 20 gate для exact
npm run test:ciи корректной генерации sprite вnpm run build:prod. Этот Draft PR не запускает deploy и не должен merge-иться в master напрямую.